iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
自我挑戰組

Design Pattern - 無所不在的設計模式系列 第 23

[Day23] Design Pattern - Mediator中介者模式

  • 分享至 

  • xImage
  •  

定義


Mediator is a behavioral design pattern that lets you reduce chaotic dependencies between objects. The pattern restricts direct communications between the objects and forces them to collaborate only via a mediator object.
--Refactoring Guru

中介者模式是一種行為型設計模式,能讓你減少物件和物件之間混亂的相依性。這個模式限制了物件之間的直接溝通,強制讓它們透過一個中介者物件來合作。

中介者模式是為了解決什麼問題而出現的?


圖像化來說...

假設我們今天有ABCD 4個物件,A想要跟B溝通,但同時間CD也想要跟B溝通,

此時,物件和物件之間的耦合度很高,
且在生活中其他實際例子,物件數量遠多於個位數,
系統中的耦合度越高的話,這個程式的維護成本就越高。

為了解決物件之間的耦合度問題~
我們在務間之間放一個中介者,
每個物件送出訊息給中介者,中介者會再依照要求,把訊息送到指定的位址

中介者模式的組成元素


  1. Mediator(中介者)
    中介者是中介者模式中的關鍵元素,負責協調不同Colleague之間的溝通。它用於處理Colleague物件之間的交互。Mediator 通常是一個介面或抽象類別。

  2. ConcreteMediator(具體中介者)
    具體中介者是中介者的實作,它實際協調Colleague物件之間的溝通。具體中介者通常包含對所有Colleague的參照,並實作Mediator介面或繼承Mediator類別,以提供協調和溝通的具體邏輯。

  3. Colleague
    Colleague是中介者模式中的參與者,它們需要合作,但不直接溝通。Colleague物件之間的通信是透過中介者進行的。Colleague 通常包含對Mediator的引用,以便將訊息傳遞給中介者,或接收從中介者傳遞來的訊息。

  4. ConcreteColleague:具體Colleague是Colleague的實作,它實際參與到合作中,並透過Mediator來進行通信。ConcreteColleague是一個具體的類別,實作了Colleague介面或繼承Colleague類別。

UML



上一篇
[Day22] Design Pattern - Iterator 迭代器模式
下一篇
[Day24] Design Pattern - Memento備忘錄模式
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言